home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 12 / CU Amiga Magazine's Super CD-ROM 12 (1997)(EMAP Images)(GB)[!][issue 1997-07].iso / CUCD / Games / DestructivePoker / sources / sources.lha / requester.cpp < prev    next >
C/C++ Source or Header  |  1997-02-18  |  3KB  |  114 lines

  1. /*
  2.         requester.cpp
  3.  
  4.         V1.00 - 241196  Kimmo Teräväinen
  5.         -----   ------  ----------------
  6.         Look requester.h
  7.  
  8. */
  9.  
  10. #include <inline++/exec.h>
  11.  
  12. #include "requester.h"
  13. #include "pokergadgets.h"
  14.  
  15. extern TextFont *TEXTFONT;
  16. extern UBYTE pens[];
  17. const cButton cReqGadgets::ReqButtons[] = {
  18.   cButton(GADGET_OK    , 80,50,50,16,"OK"),
  19.   cButton(0,0,0,0,0,NULL)
  20. };
  21.  
  22. int cReqGadgets::IDCMP(const IntuiMessage *msg)
  23. {
  24.   switch(msg->Class) {
  25.     case IDCMP_REFRESHWINDOW: GT_BeginRefresh(wnd);
  26.                               GT_EndRefresh(wnd, TRUE);
  27.                               return IDCMP_DONE;
  28.  
  29.     case IDCMP_VANILLAKEY:
  30.          switch(msg->Code) {
  31.            case 10:
  32.            case 13:
  33.            case 27:
  34.            case 'o':
  35.            case 'O':
  36.            case 'k':
  37.            case 'K': return IDCMP_TERMINATED;
  38.          }
  39.          break;
  40.     case IDCMP_GADGETUP:
  41.          {
  42.            Gadget *gad = (struct Gadget *)msg->IAddress;
  43.            switch(gad->GadgetID) {
  44.              case GADGET_OK: return IDCMP_TERMINATED;
  45.            }
  46.            return IDCMP_DONE;
  47.          }
  48.     case IDCMP_CLOSEWINDOW:
  49.          return IDCMP_TERMINATED;
  50.   }
  51.   return IDCMP_NOT_DONE;
  52. }
  53.  
  54. void cRequester::Execute()
  55. {
  56.   Window *Wnd=NULL;
  57.   int BTop = parent->WScreen->WBorTop + (parent->WScreen->Font->ta_YSize + 1);
  58.  
  59.   {
  60.     struct TagItem window_tags[] = {
  61.       { WA_Title, (long unsigned)title.chars() },
  62.       { WA_DragBar , TRUE},
  63.       { WA_DepthGadget , TRUE},
  64.       { WA_CloseGadget, TRUE },
  65.       { WA_Left, parent->LeftEdge  + (parent->Width-210)/2 },
  66.       { WA_Top,  parent->TopEdge   + (parent->Height-70)/2  },
  67.       { WA_Width, 210 }, { WA_Height, 70+BTop },
  68.       { WA_CustomScreen, (ULONG)parent->WScreen },
  69.       { WA_Activate, TRUE},
  70.       { WA_IDCMP, IDCMP_VANILLAKEY |
  71.                   IDCMP_MOUSEBUTTONS |
  72.                   IDCMP_GADGETUP |
  73.                   IDCMP_REFRESHWINDOW |
  74.                   IDCMP_CLOSEWINDOW },
  75.       { TAG_DONE, NULL}
  76.     };
  77.     Wnd=OpenWindowTagList(NULL,window_tags);
  78.   }
  79.  
  80.   if(Wnd)
  81.   {
  82.       SetFont(Wnd->RPort,TEXTFONT);
  83.  
  84.       int RT,terminated=FALSE;
  85.       cReqGadgets reqgads(Wnd);
  86.  
  87.  
  88.       Move(Wnd->RPort,
  89.            (Wnd->Width-TextLength(Wnd->RPort,(UBYTE*)text.chars(),text.length()))/2,
  90.            20+Wnd->BorderTop);
  91.       SetAPen(Wnd->RPort,pens[1]); SetDrMd(Wnd->RPort,JAM1);
  92.       Text(Wnd->RPort,text,text.length());
  93.  
  94.  
  95.       while(!terminated) {
  96.         Message *msg;
  97.  
  98.         WaitPort(Wnd->UserPort);
  99.         while(msg=GetMsg(Wnd->UserPort)) {
  100.  
  101.           if((RT=reqgads.IDCMP((const IntuiMessage *)msg))==IDCMP_NOT_DONE)
  102.             switch(((IntuiMessage *)msg)->Class) {
  103.               case IDCMP_CLOSEWINDOW: terminated=TRUE; break;
  104.             }
  105.           if(RT==IDCMP_TERMINATED) terminated=TRUE;
  106.           if(RT!=IDCMP_REPLYED) ReplyMsg(msg);
  107.         }
  108.       }
  109.  
  110.     CloseWindow(Wnd);
  111.   }
  112. }
  113.  
  114.